home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / T U R B O Language / Turbo Pascal V7.0 / INTRFACE.ZIP / DRIVERS.INT < prev    next >
Text File  |  1992-10-30  |  7KB  |  241 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Turbo Pascal Version 7.0                        }
  5. {       Turbo Vision Unit                               }
  6. {                                                       }
  7. {       Copyright (c) 1991,92 Borland International     }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit Drivers;
  12.  
  13. {$X+,I-,S-}
  14.  
  15. interface
  16.  
  17. uses Objects;
  18.  
  19. { ******** EVENT MANAGER ******** }
  20.  
  21. const
  22.  
  23. { Event codes }
  24.  
  25.   evMouseDown = $0001;
  26.   evMouseUp   = $0002;
  27.   evMouseMove = $0004;
  28.   evMouseAuto = $0008;
  29.   evKeyDown   = $0010;
  30.   evCommand   = $0100;
  31.   evBroadcast = $0200;
  32.  
  33. { Event masks }
  34.  
  35.   evNothing   = $0000;
  36.   evMouse     = $000F;
  37.   evKeyboard  = $0010;
  38.   evMessage   = $FF00;
  39.  
  40. { Extended key codes }
  41.  
  42.   kbEsc       = $011B;  kbAltSpace  = $0200;  kbCtrlIns   = $0400;
  43.   kbShiftIns  = $0500;  kbCtrlDel   = $0600;  kbShiftDel  = $0700;
  44.   kbBack      = $0E08;  kbCtrlBack  = $0E7F;  kbShiftTab  = $0F00;
  45.   kbTab       = $0F09;  kbAltQ      = $1000;  kbAltW      = $1100;
  46.   kbAltE      = $1200;  kbAltR      = $1300;  kbAltT      = $1400;
  47.   kbAltY      = $1500;  kbAltU      = $1600;  kbAltI      = $1700;
  48.   kbAltO      = $1800;  kbAltP      = $1900;  kbCtrlEnter = $1C0A;
  49.   kbEnter     = $1C0D;  kbAltA      = $1E00;  kbAltS      = $1F00;
  50.   kbAltD      = $2000;  kbAltF      = $2100;  kbAltG      = $2200;
  51.   kbAltH      = $2300;  kbAltJ      = $2400;  kbAltK      = $2500;
  52.   kbAltL      = $2600;  kbAltZ      = $2C00;  kbAltX      = $2D00;
  53.   kbAltC      = $2E00;  kbAltV      = $2F00;  kbAltB      = $3000;
  54.   kbAltN      = $3100;  kbAltM      = $3200;  kbF1        = $3B00;
  55.   kbF2        = $3C00;  kbF3        = $3D00;  kbF4        = $3E00;
  56.   kbF5        = $3F00;  kbF6        = $4000;  kbF7        = $4100;
  57.   kbF8        = $4200;  kbF9        = $4300;  kbF10       = $4400;
  58.   kbHome      = $4700;  kbUp        = $4800;  kbPgUp      = $4900;
  59.   kbGrayMinus = $4A2D;  kbLeft      = $4B00;  kbRight     = $4D00;
  60.   kbGrayPlus  = $4E2B;  kbEnd       = $4F00;  kbDown      = $5000;
  61.   kbPgDn      = $5100;  kbIns       = $5200;  kbDel       = $5300;
  62.   kbShiftF1   = $5400;  kbShiftF2   = $5500;  kbShiftF3   = $5600;
  63.   kbShiftF4   = $5700;  kbShiftF5   = $5800;  kbShiftF6   = $5900;
  64.   kbShiftF7   = $5A00;  kbShiftF8   = $5B00;  kbShiftF9   = $5C00;
  65.   kbShiftF10  = $5D00;  kbCtrlF1    = $5E00;  kbCtrlF2    = $5F00;
  66.   kbCtrlF3    = $6000;  kbCtrlF4    = $6100;  kbCtrlF5    = $6200;
  67.   kbCtrlF6    = $6300;  kbCtrlF7    = $6400;  kbCtrlF8    = $6500;
  68.   kbCtrlF9    = $6600;  kbCtrlF10   = $6700;  kbAltF1     = $6800;
  69.   kbAltF2     = $6900;  kbAltF3     = $6A00;  kbAltF4     = $6B00;
  70.   kbAltF5     = $6C00;  kbAltF6     = $6D00;  kbAltF7     = $6E00;
  71.   kbAltF8     = $6F00;  kbAltF9     = $7000;  kbAltF10    = $7100;
  72.   kbCtrlPrtSc = $7200;  kbCtrlLeft  = $7300;  kbCtrlRight = $7400;
  73.   kbCtrlEnd   = $7500;  kbCtrlPgDn  = $7600;  kbCtrlHome  = $7700;
  74.   kbAlt1      = $7800;  kbAlt2      = $7900;  kbAlt3      = $7A00;
  75.   kbAlt4      = $7B00;  kbAlt5      = $7C00;  kbAlt6      = $7D00;
  76.   kbAlt7      = $7E00;  kbAlt8      = $7F00;  kbAlt9      = $8000;
  77.   kbAlt0      = $8100;  kbAltMinus  = $8200;  kbAltEqual  = $8300;
  78.   kbCtrlPgUp  = $8400;  kbAltBack   = $0800;  kbNoKey     = $0000;
  79.  
  80. { Keyboard state and shift masks }
  81.  
  82.   kbRightShift  = $0001;
  83.   kbLeftShift   = $0002;
  84.   kbCtrlShift   = $0004;
  85.   kbAltShift    = $0008;
  86.   kbScrollState = $0010;
  87.   kbNumState    = $0020;
  88.   kbCapsState   = $0040;
  89.   kbInsState    = $0080;
  90.  
  91. { Mouse button state masks }
  92.  
  93.   mbLeftButton  = $01;
  94.   mbRightButton = $02;
  95.  
  96. type
  97.  
  98. { Event record }
  99.  
  100.   PEvent = ^TEvent;
  101.   TEvent = record
  102.     What: Word;
  103.     case Word of
  104.       evNothing: ();
  105.       evMouse: (
  106.         Buttons: Byte;
  107.         Double: Boolean;
  108.         Where: TPoint);
  109.       evKeyDown: (
  110.         case Integer of
  111.       0: (KeyCode: Word);
  112.           1: (CharCode: Char;
  113.               ScanCode: Byte));
  114.       evMessage: (
  115.         Command: Word;
  116.         case Word of
  117.           0: (InfoPtr: Pointer);
  118.           1: (InfoLong: Longint);
  119.           2: (InfoWord: Word);
  120.           3: (InfoInt: Integer);
  121.           4: (InfoByte: Byte);
  122.           5: (InfoChar: Char));
  123.   end;
  124.  
  125. const
  126.  
  127. { Initialized variables }
  128.  
  129.   ButtonCount: Byte = 0;
  130.   MouseEvents: Boolean = False;
  131.   MouseReverse: Boolean = False;
  132.   DoubleDelay: Word = 8;
  133.   RepeatDelay: Word = 8;
  134.  
  135. var
  136.  
  137. { Uninitialized variables }
  138.  
  139.   MouseIntFlag: Byte;
  140.   MouseButtons: Byte;
  141.   MouseWhere: TPoint;
  142.  
  143. { Event manager routines }
  144.  
  145. procedure InitEvents;
  146. procedure DoneEvents;
  147. procedure ShowMouse;
  148. procedure HideMouse;
  149. procedure GetMouseEvent(var Event: TEvent);
  150. procedure GetKeyEvent(var Event: TEvent);
  151. function GetShiftState: Byte;
  152.  
  153. { ******** SCREEN MANAGER ******** }
  154.  
  155. const
  156.  
  157. { Screen modes }
  158.  
  159.   smBW80    = $0002;
  160.   smCO80    = $0003;
  161.   smMono    = $0007;
  162.   smFont8x8 = $0100;
  163.  
  164. const
  165.  
  166. { Initialized variables }
  167.  
  168.   StartupMode: Word = $FFFF;
  169.  
  170. var
  171.  
  172. { Uninitialized variables }
  173.  
  174.   ScreenMode: Word;
  175.   ScreenWidth: Byte;
  176.   ScreenHeight: Byte;
  177.   HiResScreen: Boolean;
  178.   CheckSnow: Boolean;
  179.   ScreenBuffer: Pointer;
  180.   CursorLines: Word;
  181.  
  182. { Screen manager routines }
  183.  
  184. procedure InitVideo;
  185. procedure DoneVideo;
  186. procedure SetVideoMode(Mode: Word);
  187. procedure ClearScreen;
  188.  
  189. { ******** SYSTEM ERROR HANDLER ******** }
  190.  
  191. type
  192.  
  193. { System error handler function type }
  194.  
  195.   TSysErrorFunc = function(ErrorCode: Integer; Drive: Byte): Integer;
  196.  
  197. { Default system error handler routine }
  198.  
  199. function SystemError(ErrorCode: Integer; Drive: Byte): Integer;
  200.  
  201. const
  202.  
  203. { Initialized variables }
  204.  
  205.   SysErrorFunc: TSysErrorFunc = SystemError;
  206.   SysColorAttr: Word = $4E4F;
  207.   SysMonoAttr: Word = $7070;
  208.   CtrlBreakHit: Boolean = False;
  209.   SaveCtrlBreak: Boolean = False;
  210.   SysErrActive: Boolean = False;
  211.  
  212. { System error handler routines }
  213.  
  214. procedure InitSysError;
  215. procedure DoneSysError;
  216.  
  217. { ******** UTILITY ROUTINES ******** }
  218.  
  219. { Keyboard support routines }
  220.  
  221. function GetAltChar(KeyCode: Word): Char;
  222. function GetAltCode(Ch: Char): Word;
  223. function GetCtrlChar(KeyCode: Word): Char;
  224. function GetCtrlCode(Ch: Char): Word;
  225. function CtrlToArrow(KeyCode: Word): Word;
  226.  
  227. { String routines }
  228.  
  229. procedure FormatStr(var Result: String; const Format: String; var Params);
  230. procedure PrintStr(const S: String);
  231.  
  232. { Buffer move routines }
  233.  
  234. procedure MoveBuf(var Dest; var Source; Attr: Byte; Count: Word);
  235. procedure MoveChar(var Dest; C: Char; Attr: Byte; Count: Word);
  236. procedure MoveCStr(var Dest; const Str: String; Attrs: Word);
  237. procedure MoveStr(var Dest; const Str: String; Attr: Byte);
  238. function CStrLen(const S: String): Integer;
  239.  
  240.  
  241.